home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import cups
- import statereason
- from timedops import TimedOperation
- from base import *
-
- class PrinterStateReasons(Question):
-
- def __init__(self, troubleshooter):
- Question.__init__(self, troubleshooter, 'Printer state reasons')
- page = self.initial_vbox(_('Status Messages'), _('There are status messages associated with this queue.'))
- self.label = gtk.Label()
- self.label.set_alignment(0, 0)
- self.label.set_line_wrap(True)
- page.pack_start(self.label, False, False, 0)
- troubleshooter.new_page(page, self)
-
-
- def display(self):
- troubleshooter = self.troubleshooter
-
- try:
- queue = troubleshooter.answers['cups_queue']
- except KeyError:
- return False
-
- parent = self.troubleshooter.get_window()
- cups.setServer('')
- self.op = TimedOperation(cups.Connection, parent = parent)
- c = self.op.run()
- self.op = TimedOperation(c.getPrinterAttributes, args = (queue,), parent = parent)
- dict = self.op.run()
- text = ''
- state_message = dict['printer-state-message']
- if state_message:
- text += _("The printer's state message is: '%s'.") % state_message
- text += '\n\n'
-
- state_reasons_list = dict['printer-state-reasons']
- if type(state_reasons_list) == unicode:
- state_reasons_list = [
- state_reasons_list]
-
- self.state_message = state_message
- self.state_reasons = state_reasons_list
- human_readable_errors = []
- human_readable_warnings = []
- for reason in state_reasons_list:
- if reason == 'none':
- continue
-
- r = statereason.StateReason(queue, reason)
- (title, description) = r.get_description()
- level = r.get_level()
- if level == statereason.StateReason.ERROR:
- human_readable_errors.append(description)
- continue
- if level == statereason.StateReason.WARNING:
- human_readable_warnings.append(description)
- continue
-
- if human_readable_errors:
- text += _('Errors are listed below:') + '\n'
- text += reduce((lambda x, y: x + '\n' + y), human_readable_errors)
- text += '\n\n'
-
- if human_readable_warnings:
- text += _('Warnings are listed below:') + '\n'
- text += reduce((lambda x, y: x + '\n' + y), human_readable_warnings)
-
- self.label.set_text(text)
- if state_message == '' and len(human_readable_errors) == 0 and len(human_readable_warnings) == 0:
- return False
- return True
-
-
- def collect_answer(self):
- if not self.displayed:
- return { }
- return {
- 'printer-state-message': self.state_message,
- 'printer-state-reasons': self.state_reasons }
-
-
- def cancel_operation(self):
- self.op.cancel()
-
-
-